#include "msg_queue.h"

// 初始化队列
void initQueue(MessageQueue& queue) {
    queue.head = 0;
    queue.tail = 0;
    queue.count = 0;
}

// 判断队列是否为空
bool isQueueEmpty(const MessageQueue& queue) {
    return queue.count == 0;
}

// 判断队列是否已满
bool isQueueFull(const MessageQueue& queue) {
    return queue.count == QUEUE_SIZE;
}

// 入队操作
bool enqueue(MessageQueue& queue, Message message) {
    if (isQueueFull(queue)) {
        return false; // 队列已满，入队失败
    }
    queue.data[queue.tail] = message;
    queue.tail = (queue.tail + 1) % QUEUE_SIZE;
    queue.count++;
    return true;
}

// 出队操作
bool dequeue(MessageQueue& queue, Message & message) {
    if (isQueueEmpty(queue)) {
        return false; // 队列为空，出队失败
    }
    message = queue.data[queue.head];
    queue.head = (queue.head + 1) % QUEUE_SIZE;
    queue.count--;
    return true;
}
